/*
 *  ADataManager.h
 *  Amano Engine
 *
 *  Created by Aurelien Serandour on 10/03/11.
 *  Copyright 2011 __MyCompanyName__. All rights reserved.
 *
 */

#ifndef _AMANO_DATA_MANAGER_H_
#define _AMANO_DATA_MANAGER_H_

#include "../Amano.h"

#include <map>
#include <string>

#include "AShader.h"
#include "AMesh.h"
#include "AMaterial.h"
//#include "Texture.h"

namespace Amano
{
	class ADataManager
	{
	public:
		static ADataManager* Singleton();
		
	private:
		static ADataManager* m_dataManagerInstance;
		
	private:
		ADataManager();
		~ADataManager();

	public:
		AShader*	createShader(std::string filenameVS, std::string filenamePS, std::string name);
		AShader*	getShader(std::string name);
		void		deleteShader(std::string name);
		
		AMesh*		createMesh(std::string filename);
		AMesh*		getMesh(std::string name);
		void		deleteMesh(std::string name);

	private:
		AShaderLibrary	m_shaderList;
		AMeshLibrary		m_meshList;
		//MaterialLibrary	m_materialList;
		//TextureLibrary	m_textureList;
		
		CountLibrary m_shaderCount;
		CountLibrary m_meshCount;
		//CountLibrary m_materialCount;
		//CountLibrary m_textureCount;
	};
}
#endif // _AMANO_DATA_MANAGER_H_